/**
 *@表单验证方法
 *@wangk071226
 *@规则：加入新方法 请注释“用途”，“参数”，“返回”，并在方法介绍中加入。
 *@方法介绍:
 *#isEmail(str)//检查输入对象的值是否符合E-Mail格式
 *#isMoney(str)//检查输入字符串是否符合金额格式,格式定义为带小数的正数，小数点后最多两位
 *#isNumberOr_Letter(str)//检查输入字符串是否只由英文字母和数字和下划线组成
 *#isNumberOrLetter(str)//检查输入字符串是否只由英文字母和数字组成
 *#isChinaOrNumbOrLett(str)//检查输入字符串是否只由汉字、字母、数字组成
 *#checkPhone(strPhone)//检查输入的电话号码格式是否正确
 *#isNotNull(str)//输入字符串是否为空
 *#isNumber(str)//输入字符串是否是数值类型
 *#checkLength(str, max)//输入字符串是否超出长度限制
 *#isDecimal(str, l, d)//检查输入字符串是否是带小数的数字格式,可以是负数(并且满足规定的精度)
 *#check_number(str)  //输入字符串是否输入数字
 *#check_naturalnumber(str)//输入字符串是否输入自然数
 *#check_integer(str)//输入字符串是否输入整数
 *#check_zh(str)//输入字符串是否输入汉字
 *#check_lowercase(str)//输入字符串是否输入小写英文字母
 *#check_uppercase(str)//输入字符串是否输入大写英文字母
 *#check_letter(str)//输入字符串是否输入英文字母
 *#check_IP(str)//校验ip地址的格式 
 *#check_URL(str)//检查输入对象的值是否符合网址格式
 *#money_format(obj)//格式化金额
 */

/*  
用途：去掉字符串中的空格  
输入：str 输入的字符串  
返回：去掉空格后的字符串   
*/
function Jtrim(str)
{

        var i = 0;
        var len = str.length;
        if ( str == "" ) return( str );
        j = len -1;
        flagbegin = true;
        flagend = true;
        while (( flagbegin == true) && (i< len))
        {
           if ( str.charAt(i) == " " )
                {
                  i=i+1;
                  flagbegin=true;
                }
                else
                {
                        flagbegin=false;
                }
        }

        while  ((flagend== true) && (j>=0))
        {
            if (str.charAt(j)==" ")
                {
                        j=j-1;
                        flagend=true;
                }
                else
                {
                        flagend=false;
                }
        }

        if ( i > j ) return ("");

        trimstr = str.substring(i,j+1);
        return trimstr;
}

/*  
用途：检查输入对象的值是否符合E-Mail格式  
输入：str 输入的字符串  
返回：如果通过验证返回true,否则返回false   
*/
function isEmail(str) {
	var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
	if (myReg.test(str)) {
		return true;
	}
	return false;
}
/*  
用途：检查输入字符串是否符合金额格式  
 格式定义为带小数的正数，小数点后最多两位  
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function isMoney(str) {
	var regu = "^[0-9]+[.][0-9]{0,2}$";
	var re = new RegExp(regu);
	if (re.test(str)) {
		return true;
	} else {
		return false;
	}
}
/*  
用途：检查输入字符串是否只由英文字母和数字和下划线组成  
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function isNumberOr_Letter(str) {    //判断是否是数字或字母   
	var regu = "^[0-9a-zA-Z_]+$";
	var re = new RegExp(regu);
	if (re.test(str)) {
		return true;
	} else {
		return false;
	}
}
/*  
用途：检查输入字符串是否只由英文字母和数字组成  
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function isNumberOrLetter(str) {    //判断是否是数字或字母   
	var regu = "^[0-9a-zA-Z]+$";
	var re = new RegExp(regu);
	if (re.test(str)) {
		return true;
	} else {
		return false;
	}
}
/*  
用途：检查输入字符串是否只由汉字、字母、数字组成  
输入：  
 value：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function isChinaOrNumbOrLett(s) {    //判断是否是汉字、字母、数字组成   
	var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}
/*  
用途：检查输入的电话号码格式是否正确  
输入：  
 strPhone：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function checkPhone(strPhone) {
	var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
	var mobileTelephone = /(^[1][0-9][0-9]{9}$)|(^0[1][0-9][0-9]{9}$)/;
	if (strPhone.length > 9) {
		if (phoneRegWithArea.test(strPhone)||mobileTelephone.test(strPhone)) {
			return true;
		} else {
			return false;
		}
	} else {
		if (phoneRegNoArea.test(strPhone)) {
			return true;
		} else {
			return false;
		}
	}
}
/*  
用途：输入字符串是否为空 
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function isNotNull(str) {
	if (str.length == 0) {
		return false;
	}
	return true;
}
/*  
用途：输入字符串是否是数值类型
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function isNumber(str) {
	if (isNaN(str)) {
		return true;
	}
	return false;
}
/*  
用途：输入字符串是否超出长度限制
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function checkLength(str, max) {
	if (getTotalBytes(str) > Math.abs(max)) {
		return false;
	}
	return true;
}
/*  
用途：检查输入字符串是否是带小数的数字格式,可以是负数(并且满足规定的精度)  
输入：str：字符串  
            l：总位数  
           d：小数点后位数  
返回：  
 如果通过验证返回true,否则返回false   
*/
function isDecimal(str, l, d) {
	if (isInteger(str)) {
		if (l == null) {
			return true;
		}
		if (str < 0) {
			l--;
		}
		if (str.length <= l) {
			return true;
		}
	}
	var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
	if (re.test(str)) {
		if (l == null) {
			return true;
		}
		if (d == null) {
			d = 0;
		}
		if (RegExp.$1 == 0 && RegExp.$2 == 0) {
			return false;
		}
		if (RegExp.$1.length + RegExp.$2.length <= l && RegExp.$2.length <= d) {
			return true;
		}
	}
	return false;
}
/*  
用途：输入字符串是否输入数字
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function check_number(str) {
	if (/^d+$/.test(str)) {
		return true;
	} else {
		return false;
	}
}
/*  
用途：输入字符串是否输入自然数
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function check_naturalnumber(str)
{    
 if (/^[0-9]+$/.test( str ) && (str > 0))
 {
    return true;
 } 
 else 
 {
     return false;
 }
}

/*  
用途：输入字符串是否输入小写英文字母
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function check_lowercase(str)
{    
 if (/^[a-z]+$/.test( str )) 
 {
    return true;
 } 
    return false;
}
/*  
用途：输入字符串是否输入汉字
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function check_zh(str){
 if (/^[u4e00-u9fa5]+$/.test(str)) {
   return true;
 }
 return false;
}
/*  
用途：输入字符串是否输入大写英文字母
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function check_uppercase(str)
{    
 if (/^[A-Z]+$/.test( str )) 
 {
    return true;
 } 
 return false;
}

/*  
用途：输入字符串是否输入英文字母
输入：  
 str：字符串  
返回：  
 如果通过验证返回true,否则返回false   
*/
function check_letter(str)
{    
 if (/^[A-Za-z]+$/.test( str )) 
 {
    return true;
 } 
 return false;
}
/* 
用途：校验ip地址的格式 
输入：strIP：ip地址 
返回：如果通过验证返回true,否则返回false； 
*/ 
function check_IP(strIP) 
{ 
    var re=/^(d+).(d+).(d+).(d+)$/; //匹配IP地址的正则表达式
 if(re.test( strIP ))
 {
  if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;
 }
 return false; 
}


/* 
用途：检查输入对象的值是否符合网址格式 
输入：str 输入的字符串 
返回：如果通过验证返回true,否则返回false 
*/ 
function check_URL(str){  
 var myReg = /^((http:[/][/])?w+([.]w+|[/]w*)*)?$/; 
 if(myReg.test( str )) return true; 
 return false; 
}

/* 
要求：一、电话号码由数字、"("、")"和"-"构成 
二、电话号码为3到8位 
三、如果电话号码中包含有区号，那么区号为三位或四位 
四、区号用"("、")"或"-"和其他部分隔开 
用途：检查输入的电话号码格式是否正确 
输入： 
strPhone：字符串 
返回： 
如果通过验证返回true,否则返回false 
*/ 
function check_phone(strPhone) 
{
 var regu =/(^([0][1-9]{2,3}[-])?d{3,8}(-d{1,6})?$)|(^([0][1-9]{2,3})d{3,8}((d{1,6}))?$)|(^d{3,8}$)/; 
 var re = new RegExp(regu);
 if (re.test( strPhone )) {
   return true;
 }
 return false;
}

/* 
用途：检查输入得值是否是传真号码
输入：str 输入的字符串 
返回：如果通过验证返回true,否则返回false 
*/ 
function check_fax(str){  
	var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
	if (str.length > 9) {
		if (phoneRegWithArea.test(str)) {
			return true;
		} else {
			return false;
		}
	} else {
		if (phoneRegNoArea.test(str)) {
			return true;
		} else {
			return false;
		}
	}
}

/**
用途：讲数字格式化成金额格式
输入：obj
返回：返回格式化后的金额*/
function money_format(obj){
	var money = obj.value;
	var type = obj.name;
	var newmoney = outputMoney(money);
	document.getElementById(type).value=newmoney;
}
function outputMoney(number) 
{ 
  number=number.replace(/\,/g,""); 
  if (number=="") return ""; 
  if(number<0) 
  return '-'+outputDollars(Math.floor(Math.abs(number)-0) + '') + outputCents(Math.abs(number) - 0); 
  else 
  return outputDollars(Math.floor(number-0) + '') + outputCents(number - 0); 
} 
function outputDollars(number) 
{ 
  if (number.length<= 3) 
  return (number == '' ? '0' : number); 
  else 
  { 
    var mod = number.length%3; 
    var output = (mod == 0 ? '' : (number.substring(0,mod))); 
    for (i=0 ; i< Math.floor(number.length/3) ; i++) 
    { 
      if ((mod ==0) && (i ==0)) 
      output+= number.substring(mod+3*i,mod+3*i+3); 
      else 
      output+= number.substring(mod+3*i,mod+3*i+3); 
    } 
    return (output); 
  } 
} 
function outputCents(amount) 
{ 
  amount = Math.round( ( (amount) - Math.floor(amount) ) *100); 
  return (amount<10 ? '.0' + amount : '.' + amount); 
}